import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
/**
 * Write a description of class Misil here.
 * 
 * @author (Fco Fernando Gosch Acosta) 
 * @version (1.0)
 */
public class Misil extends LanzaMisiles
{
     /**
     * Constructor de Misil le asigna el valor inicial a daño
     *
     */
    public Misil(int rot)
    {
        super(0);
        setRotation(rot);
    }    
    
    
    /**
     * Metodo busca busca objetos de clase meteorito para dirigirse hacia ellos
     *
     */
    public void busca()
    {
        List<Pequenio> pequenioCercano =  getObjectsInRange(250 , Pequenio.class);
        List<Metal> metalCercano =  getObjectsInRange(250 , Metal.class);
        List<Grande> grandeCercano =  getObjectsInRange(150 , Grande.class);
        List<Pulido> pulidoCercano =  getObjectsInRange(150 , Pulido.class);
        if(pequenioCercano.size()>0)
        {            
            Pequenio cercano = pequenioCercano.get(0);            
            turnTowards(cercano.getX(), cercano.getY());         
        }
        
        else  if(metalCercano.size()>0)
        {            
            Metal cercano = metalCercano.remove(0);
            turnTowards(cercano.getX(), cercano.getY());        
        }
        else if(grandeCercano.size()>0)
        {            
            Grande cercano = grandeCercano.get(0);            
            turnTowards(cercano.getX(), cercano.getY());         
        }
        
        else  if(pulidoCercano.size()>0)
        {            
            Pulido cercano = pulidoCercano.remove(0);
            turnTowards(cercano.getX(), cercano.getY());        
        }
    }
    
    /**
     * Act - do whatever the Misil wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {        
        busca();
        move(4);        
        Pulido p = (Pulido) getOneIntersectingObject(Pulido.class);
        Grande g = (Grande) getOneIntersectingObject(Grande.class);
        Metal m = (Metal) getOneIntersectingObject(Metal.class);
        Pequenio pe = (Pequenio) getOneIntersectingObject(Pequenio.class);
        
        if(alBorde())
            getWorld().removeObject(this); 
            
        if(p!=null){
            p.reciveDanio(danioMisil);
            getWorld().removeObject(this);
        }
        
        else if(g!=null){
            g.reciveDanio(danioMisil * 2);
            getWorld().removeObject(this);
        }
        
        else if(m!=null){
           m.reciveDanio((danioMisil ));
           getWorld().removeObject(this);
        }
        
        else if(pe!=null){
            pe.reciveDanio((danioMisil / 2 ));
            getWorld().removeObject(this);
        }
              
    }    
}
